#ifndef OSurfaceCombModifier_H__
#define OSurfaceCombModifier_H__

enum
{
	// Dynamic attributes defined on enum class PlugId
	comb_PLUGS = 1000,
	
	//////////////////////////////////////////////////////////////////////////
	// Object attributes -- DO NOT CHANGE, attribute keys on saved projects
	comb_START = 2000,
	
	// Attributes
	comb_Slope_Group,
	comb_StrandGroupPatternAttribute,
	comb_RandomSeedAttribute,
	comb_ApplyToDirection,
	comb_ApplyToShape,
	comb_AffectWholeStrandAttribute,
	comb_SlopeMultiplierAttribute,
	comb_SlopeRampAttribute,
	comb_SlopeChannelAttribute,
	comb_MinimumBendValueAttribute,
	comb_MaximumBendValueAttribute,
	
	// Chaos
	comb_Chaos_Group = 2100,
	comb_ChaosAttribute,
	comb_ChaosMultiplierAttribute,
	comb_ChaosChannelAttribute,
	
	// Sinks
	comb_Sinks_Group = 2200,
	comb_SinkOrientationTypeAttribute,
	comb_OrientationMultiplierAttribute,
	comb_UseVectorOrientationMapAttribute,
	comb_OrientationChannelAttribute,
	comb_DetachSinksAttribute,
	// Selected sink
	comb_SinkAttributes_Group,
	comb_SinkCount,
	comb_SelectedSinkIndex,
	comb_SinkFaceIndex,
	comb_SinkBarycentricCoord,
	comb_SinkDirection,
	comb_SinkType,
	comb_SinkMirrorType,
	comb_OverrideSlope,
	comb_OverrideSlopeRamp,
	
	// TODO
	// Sink Curves
	comb_SinkCurves_Group = 2300,
	comb_SinkCurvesAttribute,
	comb_SinkCurvesSampleCountAttribute,
	comb_FreezeSinkCurvesAttribute,
	
	// Sink Arrays
	
	comb_SinkFaceIndex_Array = 2400,
	comb_SinkBarycentricCoord_Array,
	comb_SinkDirection_Array,
	comb_SinkType_Array,
	comb_SinkMirrorType_Array,
	comb_OverrideSlope_Array,
	comb_OverrideSlopeRamp_Array,
	
	
	//////////////////////////////////////////////////////////////////////////
	
	// Buttons
	
	comb_Button_Sink_Add = 3000,
	comb_Button_Sink_Edit,
	comb_Button_Sink_Delete,
	
	comb_Button_SinkCurves_Add,
	comb_Button_SinkCurves_Remove,
	
	
	// Labels
	
	comb_DetachSinksAttributeLabelOn,
	comb_DetachSinksAttributeLabelOff,
	
	//////////////////////////////////////////////////////////////////////////
	
	comb_END
};

enum
{
	comb_SinkOrientationType_Absolute,		// SurfaceComber::SinkOrientationType::Absolute
	comb_SinkOrientationType_Relative,		// SurfaceComber::SinkOrientationType::Relative
};

enum
{
	comb_SinkType_Repel,		// SurfaceComber::SinkType::Repel
	comb_SinkType_Attract,		// SurfaceComber::SinkType::Attract
	comb_SinkType_Direct,		// SurfaceComber::SinkType::Direct
};

enum
{
	comb_SinkMirrorType_None,	// SurfaceComber::MirrorType::None
	comb_SinkMirrorType_X,		// SurfaceComber::MirrorType::X
	comb_SinkMirrorType_Y,		// SurfaceComber::MirrorType::Y
	comb_SinkMirrorType_Z,		// SurfaceComber::MirrorType::Z
};

#endif
